module EJ5 where

import EJ4
import Arbol23
import TP

-- Para poder utilizar e
-- Sacadpo de Arbol23.hs
incrementarHojas::Num a =>Arbol23 a b->Arbol23 a b
incrementarHojas = mapA23 (+1) id

arbolito3::Arbol23 Int (Int->Int->Int)
arbolito3 = Dos (+) (Tres (*) (-) (Hoja 1) (Hoja 2) (Hoja 3)) (incrementarHojas arbolito3)

--Definicion para usar con el foldA23 para arboles 
-- construidos con el constructor Dos
evalDos::(a->a->a)->a->a->a
evalDos x izq der= x izq der 

--Definicion para usar con el foldA23 para arboles 
-- construidos con el constructor Tres
evalTres::(a->a->a)->(a->a->a)->a->a->a->a
evalTres x y izq med der= y (x izq med) der


evaluar::Arbol23 a (a->a->a)->a
evaluar arbol= foldA23 id evalDos evalTres arbol